.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
include    \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
include    \masm32\include\debug.inc
includelib \masm32\lib\debug.lib
.data
nombre db "Compilador",0
EDIV0 db "Error: Division por 0",0
EOVER db "Error: Overflow en la suma",0
cte0 dq 0
cte7 dq 0.0
cte6 dq 0.0
cte5 dq 1.0
cte4 dq 5.0
cte3 dq 5.
cte2 dq 2.
cte1 dq 20.
CADENA5 db "a no es 0.0", 0
CADENA4 db "a es 0.0", 0
CADENA3 db "a llego a 0", 0
CADENA2 db "a -= 1", 0
CADENA1 db "a = b = 5.", 0
CADENA0 db "b[2] ahora es 5.", 0
@4 dq 0000h
@1 dq 8
b dq 20 dup (0000h)
a dq 0000h

.code
start:

FLD b
FADD @1
FSTP @1
FLD cte3
FSTP qword ptr[@1]
FWAIT
invoke MessageBox, NULL, addr CADENA0 , addr nombre, MB_OK
FLD cte4
FSTP a
invoke MessageBox, NULL, addr CADENA1 , addr nombre, MB_OK
ET8:
FLD a
FLD cte5
FSUB
FSTP @4
FLD @4
FSTP a
invoke MessageBox, NULL, addr CADENA2 , addr nombre, MB_OK
FLD cte7
FLD a
FCOMP
fstsw ax
sahf
JA ET8
invoke MessageBox, NULL, addr CADENA3 , addr nombre, MB_OK
FLD cte7
FLD a
FCOMP
fstsw ax
sahf
JNE ET29
invoke MessageBox, NULL, addr CADENA4 , addr nombre, MB_OK
JMP ET30
ET29:
invoke MessageBox, NULL, addr CADENA5 , addr nombre, MB_OK
ET30:
invoke ExitProcess,0
DIV0:
invoke MessageBox, NULL, addr EDIV0, addr nombre, MB_OK
JMP ABORT
OVER:
invoke MessageBox, NULL, addr EOVER, addr nombre, MB_OK
JMP ABORT
ABORT:
invoke ExitProcess,1
end start